Service-oriented architectures (SOAs) are systems that support interactions between two kinds of software entities: service providers, which provide services, and consumers, which use these services. Typically, a consumer issues a message containing a request for a service, and a component within the SOA selects a provider for that service. In some cases, the SOA contains a router that, in addition to selecting a provider, also forwards the request message to the selected provider.
SOAs exist in which a provider can be selected based on information contained in the message. However, it would be desirable for a provider to be selected based on information about the provider's context. (The provider's location is one example of a type of context.) Moreover, it would be desirable to add to an existing system, such as one based on Java Business Integration (JBI), functionality to select a provider based on context.